From 25e97b0bd1a404357beba882c36fdc6109234fb3 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 21 Jul 2016 00:23:12 +0300 Subject: [PATCH] Move path to rustc into Rustc struct --- src/cargo/util/config.rs | 12 ++++-------- src/cargo/util/rustc.rs | 8 +++++--- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/cargo/util/config.rs b/src/cargo/util/config.rs index 28e9228d2..a225b6cfd 100644 --- a/src/cargo/util/config.rs +++ b/src/cargo/util/config.rs @@ -28,7 +28,6 @@ pub struct Config { values: RefCell>, values_loaded: Cell, cwd: PathBuf, - rustc: RefCell>, rustdoc: RefCell>, target_dir: RefCell>, extra_verbose: Cell, @@ -47,7 +46,6 @@ impl Config { cwd: cwd, values: RefCell::new(HashMap::new()), values_loaded: Cell::new(false), - rustc: RefCell::new(None), rustdoc: RefCell::new(None), target_dir: RefCell::new(None), extra_verbose: Cell::new(false), @@ -99,10 +97,8 @@ impl Config { } pub fn rustc(&self) -> CargoResult> { - if self.rustc.borrow().is_none() { - *self.rustc.borrow_mut() = Some(try!(self.get_tool("rustc"))); - } - Ok(Ref::map(self.rustc.borrow(), |opt| opt.as_ref().map(AsRef::as_ref).unwrap())) + let rustc = try!(self.rustc_info()); + Ok(Ref::map(rustc, |r| r.path.as_ref())) } pub fn rustdoc(&self) -> CargoResult> { @@ -114,8 +110,8 @@ impl Config { pub fn rustc_info(&self) -> CargoResult> { if self.rustc_info.borrow().is_none() { - let path = try!(self.rustc()); - *self.rustc_info.borrow_mut() = Some(try!(Rustc::new(&*path))); + let path = try!(self.get_tool("rustc")); + *self.rustc_info.borrow_mut() = Some(try!(Rustc::new(path))); } Ok(Ref::map(self.rustc_info.borrow(), |opt| opt.as_ref().unwrap())) } diff --git a/src/cargo/util/rustc.rs b/src/cargo/util/rustc.rs index 51039de7a..8504e51e2 100644 --- a/src/cargo/util/rustc.rs +++ b/src/cargo/util/rustc.rs @@ -1,8 +1,9 @@ -use std::path::Path; +use std::path::PathBuf; use util::{self, CargoResult, internal, ChainError}; pub struct Rustc { + pub path: PathBuf, pub verbose_version: String, pub host: String, /// Backwards compatibility: does this compiler support `--cap-lints` flag? @@ -15,8 +16,8 @@ impl Rustc { /// /// If successful this function returns a description of the compiler along /// with a list of its capabilities. - pub fn new>(path: P) -> CargoResult { - let mut cmd = util::process(path.as_ref()); + pub fn new(path: PathBuf) -> CargoResult { + let mut cmd = util::process(&path); cmd.arg("-vV"); let mut first = cmd.clone(); @@ -42,6 +43,7 @@ impl Rustc { }; Ok(Rustc { + path: path, verbose_version: verbose_version, host: host, cap_lints: cap_lints, -- 2.30.2